package com.liu.susu.dao;

import com.liu.susu.pojo.Dog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * jpql查询
 */
public interface DogDao2 extends JpaRepository<Dog,Integer> {
    /**
     * 没有限制条件的查所有
     * @return
     */
    @Query(value = "from com.liu.susu.pojo.Dog")
    List<Dog> getDogList();

    /**
     * 给个别名d，类似查询select *
     * @return
     */
    @Query(value = "select d from com.liu.susu.pojo.Dog d")
    List<Dog> getDogList2();

    /**
     * 这种写法，查具体字段的,查询结果集并没有封装到实体对象中，
     *         而是封装到了Object[]中
     * @return
     */
    @Query(value = "select dogNum,dogName from com.liu.susu.pojo.Dog d")
    List<Object[]> getDogObjectList();

    /**
     * new 一个，所以查询结果直接封装到了对应的实体里，但是需要对应的构造器
     *          所以如果查的字段多的话，就比较麻烦·
     * @return
     */
    @Query(value = "select new com.liu.susu.pojo.Dog(dogNum,dogName) from com.liu.susu.pojo.Dog d")
    List<Dog> getDogList3();

    /**
     * 根据条件查询
     * @return
     */
    @Query(value = "select d from com.liu.susu.pojo.Dog d where d.dogAge=?1")
    List<Dog> getDogList0(int dogAge);


}
